import { App } from 'vue';

// 自动注册全局组件

// 这玩意的作用就是让你在任意文件的模板引擎下能够不用动手一次次引入全局注册,自己来
export default {
  install(app: App): void {
    // 网络上的名字requireComponent=require.context
    const componentsContext = require.context(
      // 其组件目录的相对路径
      './',
      // 是否查询其子目录
      true,
      // 匹配后缀文件名的文件
      /index.(vue|ts|tsx)$/
    );
    // 遍历获取到的文件名，依次进行全局注册
    componentsContext.keys().forEach((fileName) => {
      // 获取组件配置(实例)
      const componentConfig = componentsContext(fileName).default;
      // console.log(componentConfig);
      // 有就返回true
      if (/.(vue|tsx)$/.test(fileName)) {
        app.component(componentConfig.name, componentConfig);
      } else if (fileName !== './index.ts') {
        app.use(componentConfig);
      }
    });
    // return app;
  },
};
